QNX

Историческая справка

Первая версия ОС QNX разработана в 1982 г. фирмой Quantum Software Systems (Канада) по заказу Министерства обороны США. До 1989 года находилось под ограничением КОКОМ. Являясь системой реального времени, в том числе для микропроцессоров фирмы INTEL, QNX используется в бортовых информационных системах самолетов F-16 и Boeing (по известным данным), а также в коммерческих системах повышенной ответственности ( банковские, биржевые, системы управления техническими объектами и т.д.). Известна реализация на ЭВМ семейства VAX. К настоящему времени для этой системы разработаны СУБД и другое инструментальное обеспечение.


ОБЗОР ОПЕРАЦИОННОЙ СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ QNX


  1. Введение
  2. Функциональные возможности QNX
  3. Структура QNX
  4. Особенности выполнения задач в QNX
  5. Виртуальные задачи и виртуальные цепи
  6. Файловая система QNX
  7. Средства программирования
  8. QNX и локальные сети

1. Введение.

QNX - это зарегистрированная торговая марка фирмы Quantum Software Systems, Canada. Фирма основана в 1980 году. В то же самое время QNX - название интегрированной операционной системы, предназначенной для поддержки работы ЛВС в реальном масштабе времени и разработанной фирмой Quantum. В настоящее время QNX находит все наиболее широкий спрос на рынках Европы, Канады и США благодаря своим уникальным свойствам. QNX - это многозадачная многопользова- тельская операционная система, работающая на РС-совместимых компьютерах.

QNX - система реального времени, в которой реализована концепция связи между задачами на основе сообщений, посылаемых от одной задачи к другой, причем задачи эти могут находиться как на одном и том же узле ЛВС, так и на разных. Реальное время и концепция связи между задачами в виде сообщений оказывают решающее влияние на разрабатываемое для QNX программное обеспечение и на программиста, стремящегося с максимальной выгодой использовать преимущества системы. Таким образом можно создавать общие прикладные программы, которые пригодны для выполнения в любой операционой среде, но в то же время можно создавать и такие программы, для которых QNX будет наиболее подходящей операционной средой. Заканчивая обзор ОС QNX, следует добавить, что названная ОС может работать в режиме защиты памяти, включает такие стандарты как POSIX и IEEE, а разработчики продолжают пополнять ее новыми продуктами и свойствами. QNX может в настоящее время функционировать на машинах с процессорами от i8088 до i80486, включая PS/2. QNX поддерживает 255 узлов сети (процессоров), которые могут совместно использовать программы, файлы и периферийные устройства. QNX в среднем выполняет операции в 20 раз быстрее, чем UNIX, обеспечивая полностью работу сети, при этом она требует 140К оперативной памяти. QNX имеется эмулятор РС-DOS.

2. Функциональные возможности QNX.

Применяемые в настоящее время традиционные операционные системы известны как "монолитные". В отличие от них, в QNX все функции "вращаются" вокруг ядра, отвечающего за создание новых задач и их переключение, организацию последовательной коммуникации периферийных узлов, обеспечение интерфейса дисков и их файловой системы, а также обеспечение коммуникационных сетей. Образно такую систему можно представить в виде "колеса", в центре которого находится + ядро ОС. Программы связываются с ядром посредством системных вызовов, основанных на прерываниях и специальном механизме связи. Так, если задача (программа) формирует вызов к операционной системе, то последняя выполняет затребованную функцию в собственном адресном пространстве, представляя из себя своеобразную большую библиотеку подпрограмм, которая используется совместно выполняемыми программами (задачами).

В "монолитных" операционных системах функции ввода/вывода файлов на то или иное устройство должны выполняться ядром. Поэтому, чтобы модифицировать эти функции, надо модифицировать саму операционную систему. А поскольку "монолитные" системы компонуются с учетом множества внутренне присущих им связей между компонентами, то всякие изменения в системе могут быть просто опасны. Поэтому твердо можно сказать, что QNX является функциональной альтернативой монолитным системам, потому что она обладает свойством "передачи сообщений". В QNX, поэтому, большинство административных задач работают как отдельные задачи, а не находятся постоянно в памяти, в ядре. Так, одна из задач может отвечать за операции на устройствах с последовательным вводом/выводом, другая - за системные файловые функции, третья - за создание и диспетчирование задач и распределение памяти, четвертая - за работу сети (сетевые коммуникации). Тогда основной задачей ядра становится предоставление средств связи программ с задачами- администраторами и друг с другом посредством сообщений.

Сообщение - это последовательность байтов произвольной длины (0-65535 байтов) произвольного формата. Протокол обмена сообщениями выглядит таким образом. Например, задача блокируется для ожидания сообщения. Другая же задача, посылает первой сообщение и при этом блокируется сама, ожидая ответа. Первая задача разблокируется, обрабатывает сообщение и отвечает, разблокируя при этом вторую задачу.

3. Структура QNX.

QNX - базируется на концепции передачи сообщений. Ядро системы обеспечивает передачу этих сообщений, а также их диспетчеризацию. Кроме того, ядро управляет временными прерываниями. Выполнение остальных функций обеспечивается задачами-администраторами, семь из которых являются основными.

1) Администратор задач (task) отвечает за распреде- ление памяти, запуск и окончание задач в системе. Программа, желающая создать задачу, посылает сообщение Администратору задач и блокируется для ожидания ответа. Если новая задача должна выполняться одновременно с порождающей ее задачей, Администратор задач создает ее, и, отвечая, выдает порождающей задаче идентификатор (id) созданной задачи. В противном случае никакого сообщения не посылается до тех пор, пока новая задача не закончится сама по себе. В этом случае в ответе Администратора задач будут содержаться конечные характеристики закончившейся задачи.

2) Администратор периферийных устройств (dev) управляет всей периферией: консолью, терминалами, модемами, принтерами, виртуальными терминалами (окнами). Он содержит драйверы для этих устройств. Администратор периферийных устройств отвечает также за такие вспомогательные функции, как вывод эха на экран, стирание и восстановление строк и т.д. Программы желающие получить информацию с терминала, должны связаться с Администратором периферийных устройств. Связь нужна и в том случае, когда программы пожелают установить терминал в определенное состояние (режим). Администратор периферийных устройств отвечает также за асинхронное использование задачами терминалов и других устройств.

3) Администратор файловой системы (fsys) отвечает за создание и работу файловой системы. Программы, желающие открыть, закрыть, читать или писать файлы, посылают сообщение Администратору файловой системы.

4) Администратор холостой работы (idle) системы "впитывает" незанятое время в системе. Он также выступает по умолчанию как владелец задач, "переживших" своих родителей. Сам он никогда не умирает.

5) Сетевой Администратор (net) обеспечивает коммуникации в сети. Обычно он вызывается программами и другими задачами- администраторами в случаях, когда нужна связь с другими узлами (процессами).

6) Администратор-таймер (timer) позволяет управлять программами и асинхронными событиями, критическими ко времени, а также осуществлять повторный запуск программ.

7) Администратор очередей (queue). Ведет очередь сообщений между задачами как на одном узле, так и во всей сети.

В QNX имеется несколько других задач-Администраторов, которые отвечают за доступ к различным ресурсам системы.

4. Особенности выполнения задач в QNX.

QNX отличается тем, что некоторая задача может быть частью операционной системы и ее среды или может быть "виртуальной" задачей. Последняя имеет большинство атрибутов локальной задачи, в то время как выполняется на других процессорах (в других узлах сети). Каждая задача, в том числе и та, которая внутренне связана с операционной системой, получает уникальный идентификатор (tid). Чтобы передать сообщение другой задаче, надо знать ее идентификатор. tid - это два байта, где в нижнем помещен фактический номер задачи (индекс, под которым она помещена в таблицу задач), а в верхнем - ее последовательный номер и виртуальный флаг. Благодаря последовательному номеру, фактический номер становится уникальным при входе в таблицу задач, если для двух различных задач используется один и тот же вход в таблице. Для "узнавания" имен (tid) задач в QNX существует два способа: порты и серверы имен.

а) порты - своеобразные точки рандеву для задач, помечаемые небольшим целым числом без знака. Типичная конфигурация QNX имеет 28 портов в действительном режиме и 40 - в защищенном. 16 из них резервируются самой операционной системой. Так, если задача - администратор желает идентифицировать себя для других программ, она выполняет операцию присоединения к заранее определенному порту. Программы же, отсоединяясь от данного порта, получают tid задачи-администратора, выдаваемой операционной системой. (В других ОС порты называются еще семафорами). Порты используются в QNX и как механизмы прерывания.

б) серверы имен - это задачи, создающие список зарегистрированных имен программ и идентификаторов - tid`s - связанных с именами этих программ. Зарегистрированное имя- это группа до 8 символов, которую задача с помощью сервера может поместить в список. Любая программа может узнать это имя путем обращения к серверу имен; далее можно посылать сообщение на это имя.

В сетевой конфигурации различаются локальные и глобальные серверы имен. Глобальный сервер - задача со своим списком имен, действующим на одном из узлов сети. В частности, среди имен может быть имя высококачественого принтера, размещенного на другом узле сети. Программы могут затребовать имя этого принтера и затем посылать туда свои файлы для вывода, снабдив эти файлы различными параметрами. Благодаря "локальной" регистрации исключается конфликт имен в сети. QNX включает специальную задачу, позволяющую создавать распределенную базу даных имен задач.

5. Виртуальные задачи и виртуальные цепи.

Благодаря такому свойству QNX, как возможность обмена посланиями между задачами и узлами сети, программы не заботятся о конкретном размещении ресурсов в сети. Это свойство придает системе необычную гибкость. Так, узлы могут произвольно добавляться и изыматься из системы, не затрагивая системные программы. QNX приобретает эту конфигурационную независимость благодаря применению концепции "виртуальных" задач. У виртуальных задач непосредст- венный код и данные, будучи на одном из удаленных узлов, возникают и ведут себя так, как если бы они были локальными задачами какого-то узла со всеми атрибутами и привилегиями. Программа, посылающая сообщение в сети, никогда не посылает его точно. Сначала она открывает "виртуальную цепочку". Виртуальная цепочка включает все виртуальные задачи, связанные между собой. На обоих концах такой связи имеются буфера, которые позволяют хранить самое большое послание из тех, которые цепочка может нести в данном сеансе связи. Сетевой администратор помещает в эти буфера все сообщения для соединенных задач. Виртуальная задача, таким образом, занимает всего лишь пространство, необходимое для буфера и входа в таблице задач. Чтобы открыть связь, необходимо знать идентификатор узла и задачи, с которой устанавливается связь. Для этого необходимо знать идентификатор задачи- администратора, ответственного за данную функцию или глобальное имя сервера. Не раскрывая здесь подробно механизм обмена посланиями, добавим лишь, что наша задача может вообще выполняться на другом узле, где, допустим, имеется более совершенный процессор.

6. Файловая система QNX

Файловая система в QNX, можно сказать, UNIX-подобная в том, что имеет древовидную структуру каталогов, сходные соглашения по наименованию файлов и обеспечению безопасности данных (и т.д.). И вообще, файловая среда, с точки зрения системного программиста, похожа на таковую в UNIX. Однако следует выделить внутреннее отличие (и преимущество) файловой системы QNX от UNIX. Это ее прочность (живучесть), уменьшенную фрагментарность файлов и увеличенную скорость работы. Сами файлы в QNX организованы по принципу списка участков с дублированием указателей. Это дает преимущество в том, что, если вход в каталог потерян или поврежден, то файл все равно может быть восстановлен путем отыскания хотя бы одного из его участков. QNX может делить один и тот же диск с другими операционными системами. В отличие от UNIX, QNX не связывает имя файла с его физической информацией. Данные в файлах хранятся в каталогах наряду с именами файлов.

Для поддержания авторизованного доступа к информации QNX имеет номера групп доступа, как и в других операционных системах. Эти числа следующие : [ группа, член-в-группе ]. Пользователь имеющий номер группы 255, является суперпользователем, имеющим неограниченный доступ к файловой системе. Пользователь, имеющий номер члена группы, равный 255, является лидером в этой группе и имеет все привилегии по работе с файлами в данной группе. QNX поддерживает также механизм закрытия записей, имеющийся в UNIX System V.

Важной особеностью QNX является то, что в ее составе может поставляться Администратор файловой системы MS/DOS, который, будучи запущен как обычная задача, обеспечивает непосредственный доступ к гибким и жестким дискам системы. Файлы на этих дисках могут редактироваться, выводиться на печать, компилироваться и т.п., как если бы они находились в стандартной файловой системе MS/DOS.

Еще одной ключевой особенностью QNX, объясняющей гибкость и эффективность системы, является распределенная система библиотек. Их два типа: библиотеки, загружаемые вместе с ядром, и библиотеки монтируемые. Последние могут создаваться пользователем. Библиотеки, загружаемые вместе с ядром, выполняют по большей части системные функции (анализ имен файлов, обеспечение ввода/вывода, форматирование сообщений и т.д.). Важной функцией разделяемых библиотек является обеспечение независимости системы в случае замены оборудования.

7. Средства программирования.

QNX написана на языке высокого уровня "С". В системе также имеется компилятор BASIC. Оба языка используют один и тот же генератор кодов и имеют одинаковый формат объектных файлов. Функциональная библиотека включает процедуры ввода/вывода на уровне устройств и файлов, математических функций, графические, прямого ввода/вывода на консоль, а также пакет рутин, анализирующих терминалы. Фирма Quantum ассемблер, линкер и два отладчика, один из которых выполняет отладку исходных текстов, а другой - системных программ.

8. QNX и локальные сети.

Локальные вычислительные сети (ЛВС) обещают революционизировать пути использования компьютеров. Благодаря сети, от 10 до 100 раз увеличивающей мощность обработки данных персональными компьютерами, можно создавать "учреждения будущего". По мере совершенствования технологии сети становятся все более доступными, следовательно можно получить доступ к глобальной базе знаний. Конечно, ключевым вопросом доступа и вычислений остаются вопросы быстрой коммутации. ОС QNX, имея скорость переключения задач 7200 задач/сек при частоте 16 МГц, гарантирует самую благоприятную среду для связи задач, выполняющихся на различных машинах. QNX видит "мир" как собрание задач, выполняющихся на одном или нескольких узлах (процессорах) и имеющих доступ к ресурсам всей системы. В сети QNX нет ограничений на использование ресурсов любой задачей. Не существует также ограничений на выбор задачей процессора, на котором она будет выполняться. Это означает, что, например, программа может выводить информацию на любой принтер, подсоединенный к любой машине сети, а также обратиться к любому файлу на любом дисководе. Для различия узлов сети пользователями и программами, узлам назначаются номера. Пользователь, работая на одном из узлов сети, по умолчанию будет использовать русурсы этого узла, однако при применении в командах "переадресации", пользователь осуществляет доступ к ресурсам других узлов.


©1999 by Nigl
Mail to: [email protected]
Last update 99-356
LIST100 Counter SpyLOG In to the Nigl's nest